package cn.xzqwjw.taskmanager.common.validator;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;

// @Documented 指明拥有这个注解的元素可以被javadoc此类的工具文档化。

/*
注解的作用目标：
@Target(ElementType.TYPE)            //接口、类、枚举、注解
@Target(ElementType.FIELD)           //字段、枚举的常量
@Target(ElementType.METHOD)          //方法
@Target(ElementType.PARAMETER)       //方法参数
@Target(ElementType.CONSTRUCTOR)     //构造函数
@Target(ElementType.LOCAL_VARIABLE)  //局部变量
@Target(ElementType.ANNOTATION_TYPE) //注解
@Target(ElementType.PACKAGE)         //包
* */

/**
 * @author rush
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.PARAMETER, ElementType.FIELD})
// 校验的逻辑处理类
@Constraint(validatedBy = HttpMethodValidatorClass.class)
public @interface HttpMethodValidator {

  // HttpMethod 的有效值，多个值使用","隔开
  // String values();

  // 用户输入的 HttpMethod 无效时的提示信息
  String message() default "HttpMethod值输入不正确";

  //分组验证，例如只在新增时进行校验等
  Class<?>[] groups() default {};

  Class<? extends Payload>[] payload() default {};

}
